# -*- coding: utf-8 -*-
# Copyright (c) 2010, Almar Klein
#
# Visvis is distributed under the terms of the (new) BSD License.
# The full license can be found in 'license.txt'.

import visvis as vv
from visvis.pypoints import Point, Pointset
import numpy as np

import zlib, base64

# About the vertex data ...
# The teapot model is a well-known and often used geometric model
# originally based on Bezier patches. After a long search I found
# polygonal (triangulated) data at:
# http://inst.eecs.berkeley.edu/~cs184/sp09/assignments/AS6.html
# I made numpy arrays of the data, which I compressed and encoded
# using base64 encoding so they could be embedded in this file
# without taking too much space.


# Code to generate the vertices and indices from the original file:
if False:
    
    # Init vertices and faces
    vertices = Pointset(3)
    indices = []
    
    # Fill vertex data and indices list
    for line in open('d:/almar/projects/teapot.txt'):
        parts = line[2:].split(' ')
        if line.startswith('v'):
            vertices.append([float(part) for part in parts])
        elif line.startswith('f'):
            indices.extend([int(part)-1 for part in parts])
    
    # Make indices numpy array
    indices = np.array(indices, dtype=np.uint32)
    
    # Their teapot is on the side
    tmp = vertices.data[:,1].copy()
    vertices.data[:,1] = vertices.data[:,2]
    vertices.data[:,2] = tmp
    
    # Dump
    data = vertices.data.tostring()
    data = zlib.compress(data)
    text = base64.encodestring(data)
    print text
    

def solidTeapot(translation=None, scaling=None, direction=None, rotation=None,
                    axesAdjust=True, axes=None):
    """ solidTeapot(
            translation=None, scaling=None, direction=None, rotation=None,
            axesAdjust=True, axes=None)
    
    Create a model of a teapot (a teapotahedron) with its bottom at the
    origin. Returns an OrientableMesh instance.
    
    Parameters
    ----------
    Note that translation, scaling, and direction can also be given
    using a Point instance.
    translation : (dx, dy, dz), optional
        The translation in world units of the created world object.
    scaling: (sx, sy, sz), optional
        The scaling in world units of the created world object.
    direction: (nx, ny, nz), optional
        Normal vector that indicates the direction of the created world object.
    rotation: scalar, optional
        The anle (in degrees) to rotate the created world object around its
        direction vector.
    axesAdjust : bool
        If True, this function will call axes.SetLimits(), and set
        the camera type to 3D. If daspectAuto has not been set yet, 
        it is set to False.
    axes : Axes instance
        Display the bars in the given axes, or the current axes if not given.
    
    """
    
    # Decode vertex data
    data = base64.decodestring(vertexData)
    data = zlib.decompress(data)
    vertices = np.frombuffer(data, dtype=np.float32 )
    vertices.shape = len(vertices)/3, 3
    vertices = Pointset(vertices)
    
    # Scale to make it height 1
    height = 1.0
    vertices = vertices * (height/3.15)
    
    # Decode face data
    data = base64.decodestring(faceData)
    data = zlib.decompress(data)
    faces = np.frombuffer(data, dtype=np.uint32 )
    
    # Use current axes?
    if axes is None:
        axes = vv.gca()
    
    # Create Mesh object
    m = vv.OrientableMesh(axes, vertices, faces)
    #
    if translation is not None:
        m.translation = translation
    if scaling is not None:
        m.scaling = scaling
    if direction is not None:
        m.direction = direction
    if rotation is not None:
        m.rotation = rotation
    
    # Adjust axes
    if axesAdjust:
        if axes.daspectAuto is None:
            axes.daspectAuto = False
        axes.cameraType = '3d'
        axes.SetLimits()
    
    # Done
    axes.Draw()
    return m



vertexData = """
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
V2ZFrwz2EqVvZkXfDJqySg/Nih4acpIo/TQb10+7q69VemtW9NYwhyh9Niv6bMh5ovTcrNJ8y8h0
DfR0lV6cFb04nBMqfTkr+nLwRUWfzcjQHlb6dVb063A2qPTurOjdwdcG31U8Aoz5QenpWdHTg96z
0t+zor+HfYDS67Oi1wc9P6XvZ0XfD/p/Sg/Qih4gtAOVfqAV/UDoCyq9QSt6g9AjVPqEVvQJoV+o
9Ayt6BlCb1vpH1rRP4Q+otJLtKKXCD1Fpa9oRV8Rew6lx2hFjxG67Eq/0Yp+I/Qdld6jFb1H6EEq
fUgr+pCYM5WepBU9SehNKv1JK/qT0L9XepVW9Coxryp9Syv6lrAVKT1MK3qY0MtU+plW9DOhr6n0
Nq3obWK+VfqcVvQ5kdNA6Xla0fOE9qfS/7Si/wl9UKUdapV2qFX6ovJ3aJBapUdqRY8UeqVKv9SK
filyQSi9Uyt6pzhrVfqoVvRRYd9SeqpW9FSRE0Ppr1rRX4XfFvoO67VSnwJD21Xpu1rRd8V8rvRg
rejBQi9W6cda0Y/FnK/0Zq3ozWLOV/q0VvRpMc8rPVsrerbIf6L0b63o32KeV3q5VvRykV9F6eta
0dfFebLS47Wix4v5X+n3WtHvxb5T6f1a0fvFukDpA1vRB4aWsNITtqInjL2p0h+2oj8MX3uUOesV
xxm2QKVvbEXfGOsOpYdsRQ8Z+XCUfrIV/WTscZXeshW9ZeTbUfrMNq7PHFt3KD1nK3rOWF8o/Wcr
+s/Qh1Z60Vb0opFfSOlLW9GXRs4ipUdtRY8a6xGlX21Fvxo5kZTetRW9a+RQUlrZGdlmZJylK/1t
K/rbpM/9P71uK3rdWNcofW8r+t5Y1yg9cCt64PBnRN2xfjj1KTBsq0pv3IreONZESp/cij451i9K
5zwj25sw1a/6uw87rtJXt6KvDi12pcduRY8dayKl325Fvx22AaX3bkXvHfYApQ9vRR8eNgClJ29F
Tx42AKU/b0V/HrZkpVdvRa8etgGlb29F3x7690oP34oePmwGSj/fin4+bAZKb9+K3j7WUEqf34o+
P3wflJ6/FT1/2BKU/r8V/X/kB1D5AqzkC4CvhMovYCW/ANZHKh+BlXwE8M1H++H8BXGGfULlO7CS
7wA+FCo/gpX8CKEfMf5RPgWOs/KRc8Gq/AtW8i8gP4PK12AlXwNsEiq/g5X8DvAXxt3D3yIeAcba
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
hNLpeMm2kP++o7T//wC2j7hk
"""

faceData = """
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
"""


if __name__ == '__main__':
    vv.figure()
    m = solidTeapot(direction=(0.1, 0.2, 1))
